<?php

/* * *********************************************************** */
/* * ********************** Classe produtoDao ********************* */
/* * ************ Desenvolvido por Antônio Ezequiel ************** */
/* * *********************************************************** */

class ProdutoDao extends Produto {

    public function adicionarProduto() {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("insert into tbl_produto (pro_titulo, pro_sinopse, pro_preco, pro_tipo, pro_estoque, pro_ativo, pro_imagem,
                                pro_cat_codigo, pro_edi_codigo, pro_dimensao, pro_subtitulo, pro_capa, pro_peso, pro_idioma,
                                pro_cod, pro_ano, pro_pagina, pro_destaque) values ('$this->pro_titulo','$this->pro_sinopse','$this->pro_preco','$this->pro_tipo',
                                '$this->pro_estoque','$this->pro_ativo','$this->pro_imagem','$this->pro_cat_codigo','$this->pro_edi_codigo',
                                '$this->pro_dimensao','$this->pro_subtitulo','$this->pro_capa','$this->pro_peso','$this->pro_idioma',
                                '$this->pro_cod','$this->pro_ano', '$this->pro_pagina', '$this->pro_destaque')");

        if ($queri) {
            $id = parent::get_insert_id();
            parent::desconectarBD();
            return $id;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

    public function atualizarProduto($codigo) {

        global $configurator;

        parent::conectarBD();
        
        $queri = parent::query("update tbl_produto set pro_titulo = '$this->pro_titulo' , pro_sinopse = '$this->pro_sinopse', pro_preco = '$this->pro_preco',
                                pro_tipo = '$this->pro_tipo', pro_estoque = '$this->pro_estoque',pro_imagem = '$this->pro_imagem',
                                pro_cat_codigo = '$this->pro_cat_codigo', pro_edi_codigo = '$this->pro_edi_codigo', pro_dimensao = '$this->pro_dimensao',
                                pro_subtitulo = '$this->pro_subtitulo', pro_capa = '$this->pro_capa', pro_peso = '$this->pro_peso',
                                pro_idioma = '$this->pro_idioma', pro_cod = '$this->pro_cod', pro_ano = '$this->pro_ano', pro_pagina = '$this->pro_pagina', 
                                pro_destaque = '$this->pro_destaque' where pro_codigo = '$codigo'");

        if ($queri) {
            parent::desconectarBD();
            return true;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

    public function atualizarEstoque($codigo) {

        global $configurator;

        parent::conectarBD();
        
        $queri = parent::query("update tbl_produto set pro_estoque = '$this->pro_estoque' where pro_codigo = '$codigo'");

        if ($queri) {
            parent::desconectarBD();
            return true;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

    public function listarProduto($codigo) {

        global $configurator;

        parent::conectarBD();
        
        $queri = parent::query("select pro_pagina as pagina, pro_titulo as titulo, pro_cod as cod, pro_imagem as imagem, pro_ano as ano, pro_preco as preco,
                                pro_capa as capa,pro_peso as peso, pro_sinopse as sinopse, pro_idioma as idioma, pro_dimensao as dimensoes,
                                pro_subtitulo as subtitulo,pro_estoque as estoque, pro_imagem as imagem, pro_estoque as estoque,
                                pro_codigo as codigo, pro_tipo as tipo, cat_descricao as categoria, edi_nome as editora, pro_destaque as destaque from tbl_produto p
                                inner join tbl_categoria c inner join tbl_editora ed on p.pro_cat_codigo = c.cat_codigo and
                                p.pro_edi_codigo = ed.edi_codigo where pro_ativo = 1 and pro_codigo ='$codigo'");

        if ($queri) {
            $dados = $queri->fetch_assoc();
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }
    
    public function listarProdutoCarrinho($codigo) {

        global $configurator;

        parent::conectarBD();
        
        $queri = parent::query("select pro_titulo as titulo, pro_preco as preco, pro_peso as peso, pro_dimensao as dimensoes,
                                pro_estoque as estoque, pro_codigo as codigo from tbl_produto p
                                where pro_ativo = 1 and pro_codigo ='$codigo'");

        if ($queri) {
            $dados = $queri->fetch_assoc();
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

    public function deletarProduto($codigo) {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("update tbl_produto set pro_ativo = '0' where pro_codigo = '$codigo'");

        if ($queri) {
            parent::desconectarBD();
            return true;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

    public function adicionarAutorProduto() {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("insert into tbl_prod_autor (pra_pro_codigo, pra_aut_codigo) values ('$this->pro_cod','$this->pro_aut_codigo')");

        if ($queri) {
            $id = parent::get_insert_id();
            parent::desconectarBD();
            return $id;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

    public function deletarAutorProduto($codigo) {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("delete from tbl_prod_autor where pra_pro_codigo = '$codigo'");

        if ($queri) {
            parent::desconectarBD();
            return true;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

    public function listarProdutoNome($titulo) {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("select pro_pagina as pagina, pro_codigo as codigo, edi_nome as editora, pro_preco as preco, pro_imagem as imagem, pro_estoque as estoque,
                                pro_tipo as tipo, pro_titulo as titulo, pro_destaque as destaque from tbl_produto p inner join tbl_editora ed on p.pro_edi_codigo = ed.edi_codigo
                                where pro_ativo = 1 and pro_titulo like trim('$titulo')");

        if ($queri) {
            $dados = $queri->fetch_assoc();
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

    public function listarAutorProduto($codigo) {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("select pra_pro_codigo as codProd, pra_aut_codigo as codAutor, aut_nome as nome from tbl_prod_autor at
                               inner join tbl_autor au on au.aut_codigo = at.pra_aut_codigo where pra_pro_codigo = $codigo");

        if ($queri) {
            $dados = parent::fetch_rows($queri);
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

    public function listarProdutosPaginado($inicio, $porPagina) {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("select pro_pagina as pagina, pro_titulo as titulo, pro_cod as cod, pro_imagem as imagem, pro_ano as ano, pro_preco as preco, pro_codigo as codigo, pro_tipo as tipo,
                                cat_descricao as categoria, pro_destaque as destaque from tbl_produto p inner join tbl_categoria c on
                                p.pro_cat_codigo = c.cat_codigo where pro_ativo = 1 order by pro_titulo asc limit $inicio, $porPagina");

        if ($queri) {
            $dados = parent::fetch_rows($queri);
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }
    
    public function listarProdutosDestaque() {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("select pro_pagina as pagina, pro_titulo as titulo, pro_cod as cod, pro_imagem as imagem, pro_ano as ano, pro_preco as preco, pro_codigo as codigo, pro_tipo as tipo,
                                cat_descricao as categoria, pro_destaque as destaque from tbl_produto p inner join tbl_categoria c on
                                p.pro_cat_codigo = c.cat_codigo where pro_ativo = 1 and pro_destaque = '1' order by pro_titulo asc");

        if ($queri) {
            $dados = parent::fetch_rows($queri);
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }
    
    public function listarProdutosLancamento() {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("select pro_pagina as pagina, pro_titulo as titulo, pro_idioma as idioma, pro_cod as cod, pro_imagem as imagem, pro_ano as ano, pro_preco as preco, pro_codigo as codigo, pro_tipo as tipo,
                                cat_descricao as categoria, pro_destaque as destaque from tbl_produto p inner join tbl_categoria c on
                                p.pro_cat_codigo = c.cat_codigo where pro_ativo = 1 and pro_destaque = '1' order by pro_codigo asc limit 0, 5");

        if ($queri) {
            $dados = parent::fetch_rows($queri);
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }
    
    public function listarProdutosAnuncio() {

        global $configurator;

        parent::conectarBD();
        
        $val = rand(0, 5000);
        
        $queri = parent::query("select pro_pagina as pagina, pro_titulo as titulo, pro_cod as cod, pro_imagem as imagem, pro_ano as ano, pro_preco as preco, pro_codigo as codigo, pro_tipo as tipo,
                                cat_descricao as categoria, pro_destaque as destaque from tbl_produto p inner join tbl_categoria c on
                                p.pro_cat_codigo = c.cat_codigo where pro_ativo = 1 order by pro_codigo asc limit $val, 30");

        if ($queri) {
            $dados = parent::fetch_rows($queri);
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

    public function listarProdutos() {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("select pro_pagina as pagina, pro_titulo as titulo, pro_codigo as codigo, pro_ano as ano, pro_tipo as tipo,
                                cat_descricao as categoria, pro_destaque as destaque from tbl_produto p inner join tbl_categoria c on
                                p.pro_cat_codigo = c.cat_codigo where pro_ativo = 1 order by pro_titulo asc limit 0, 1000");

        if ($queri) {
            $dados = parent::fetch_rows($queri);
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

    public function listarProdutosAutoComplite($titulo) {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("select pro_titulo as titulo, pro_codigo as codigo, pro_estoque as estoque from tbl_produto 
                                where pro_ativo = 1 and pro_titulo like '%$titulo%' and pro_estoque > 0 order by pro_titulo asc");

        if ($queri) {
            $dados = parent::fetch_rows($queri);
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

    public function listarProdutosPaginadoAjax($ini, $inicio, $porPagina) {

        global $configurator;

        parent::conectarBD();
        
        $queri = parent::query(sprintf("select distinct pro_pagina as pagina, pro_idioma as idioma, pro_titulo as titulo, pro_cod as cod, pro_imagem as imagem, pro_ano as ano, pro_preco as preco,
                                pro_codigo as codigo, pro_tipo as tipo, cat_descricao as categoria, pro_destaque as destaque from tbl_produto p inner join tbl_categoria c
                                inner join tbl_prod_autor au on p.pro_cat_codigo = c.cat_codigo and
                                au.pra_pro_codigo = p.pro_codigo where %s %s %s %s %s %s %s %s order by pro_titulo desc LIMIT $inicio, $porPagina", $ini, $this->pro_aut_codigo,
                                $this->pro_cat_codigo, $this->pro_edi_codigo, $this->pro_cod, $this->pro_titulo, $this->pro_ano, $this->pro_destaque));

        if ($queri) {
            $dados = parent::fetch_rows($queri);
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }
    
    public function listarProdutosPaginadoCategoria($ini, $inicio, $porPagina) {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query(sprintf("select distinct pro_pagina as pagina, pro_idioma as idioma, pro_titulo as titulo, pro_cod as cod, pro_imagem as imagem, pro_ano as ano, pro_preco as preco,
                                pro_codigo as codigo, pro_tipo as tipo, cat_descricao as categoria, pro_destaque as destaque from tbl_produto p inner join tbl_categoria c
                                on p.pro_cat_codigo = c.cat_codigo
                                where %s %s %s %s %s %s %s %s order by pro_titulo asc LIMIT $inicio, $porPagina", $ini, $this->pro_aut_codigo,
                                $this->pro_cat_codigo, $this->pro_edi_codigo, $this->pro_cod, $this->pro_titulo, $this->pro_ano, $this->pro_destaque));

        if ($queri) {
            $dados = parent::fetch_rows($queri);
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }
    
    public function listarProdutosPaginadoNovo($inicio, $porPagina) {

        global $configurator;

        parent::conectarBD();
       
        $queri = parent::query("select distinct pro_pagina as pagina, pro_idioma as idioma, pro_titulo as titulo, pro_cod as cod, pro_imagem as imagem, pro_ano as ano, pro_preco as preco,
                                pro_codigo as codigo, pro_tipo as tipo, cat_descricao as categoria, pro_destaque as destaque from tbl_produto p inner join tbl_categoria c
                                on p.pro_cat_codigo = c.cat_codigo
                                where pro_ativo = '1' and pro_tipo = 'novo' order by pro_titulo asc LIMIT $inicio, $porPagina");

        if ($queri) {
            $dados = parent::fetch_rows($queri);
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }
    
    public function listarProdutosPaginadoUsado($inicio, $porPagina) {

        global $configurator;

        parent::conectarBD();
       
        $queri = parent::query("select distinct pro_pagina as pagina, pro_idioma as idioma, pro_titulo as titulo, pro_cod as cod, pro_imagem as imagem, pro_ano as ano, pro_preco as preco,
                                pro_codigo as codigo, pro_tipo as tipo, cat_descricao as categoria, pro_destaque as destaque from tbl_produto p inner join tbl_categoria c
                                on p.pro_cat_codigo = c.cat_codigo
                                where pro_ativo = '1' and pro_tipo = 'usado' order by pro_titulo asc LIMIT $inicio, $porPagina");

        if ($queri) {
            $dados = parent::fetch_rows($queri);
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

    public function totalPaginas() {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("select count(pro_codigo) as quantidade from tbl_produto where pro_ativo = 1");

        if ($queri) {
            $dados = $queri->fetch_assoc();
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }
    
    public function verificarDisponibilidadeDestaque() {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("select count(pro_codigo) as quantidade from tbl_produto where pro_destaque = 1");

        if ($queri) {
            $dados = $queri->fetch_assoc();
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }
    
    public function isDestaque($codigo) {

        global $configurator;

        parent::conectarBD();
        
        $queri = parent::query("select pro_codigo as quantidade from tbl_produto where pro_codigo = '$codigo' and pro_destaque = '1'");

        if ($queri->fetch_assoc()) {
            parent::desconectarBD();
            return true;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

    public function totalPaginasAjax($ini) {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query(sprintf("select distinct count(*) as totRegistros from tbl_produto p inner join tbl_categoria c
                                inner join tbl_prod_autor au on p.pro_cat_codigo = c.cat_codigo and
                                au.pra_pro_codigo = p.pro_codigo where %s %s %s %s %s %s %s %s", $ini, $this->pro_aut_codigo,
                                $this->pro_cat_codigo, $this->pro_edi_codigo, $this->pro_cod, $this->pro_titulo, $this->pro_ano, $this->pro_destaque));

        if ($queri) {
            $dados = $queri->fetch_assoc();
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }
    
     public function totalPaginasCategoria($ini) {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query(sprintf("select distinct count(*) as totRegistros from tbl_produto p inner join tbl_categoria c
                                on p.pro_cat_codigo = c.cat_codigo
                                where %s %s %s %s %s %s %s %s", $ini, $this->pro_aut_codigo,
                                $this->pro_cat_codigo, $this->pro_edi_codigo, $this->pro_cod, $this->pro_titulo, $this->pro_ano, $this->pro_destaque));

        if ($queri) {
            $dados = $queri->fetch_assoc();
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }
    
    public function totalPaginasNovo() {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("select distinct count(*) as totRegistros from tbl_produto 
                                where pro_ativo = '1' and pro_tipo = 'novo'");

        if ($queri) {
            $dados = $queri->fetch_assoc();
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }
    
    public function totalPaginasUsado() {

        global $configurator;

        parent::conectarBD();

        $queri = parent::query("select distinct count(*) as totRegistros from tbl_produto 
                                where pro_ativo = '1' and pro_tipo = 'usado'");

        if ($queri) {
            $dados = $queri->fetch_assoc();
            parent::desconectarBD();
            return $dados;
        } else {
            parent::desconectarBD();
            return false;
        }
    }

}

?>
